# 第一步：导入模块
from fastapi import FastAPI
from fastapi import Response
import uvicorn

# 第二步：创建FastAPI对象
app = FastAPI()

# 第三步：使用装饰器收发消息
# 处理首页请求
@app.get('/')
# def func(path:str):  错误写法，会报错422，错误422 (Unprocessable Entity) 表示FastAPI无法处理接收到的请求数据
# 问题在于：定义了一个路径参数path:str，但是当访问http://127.0.0.1:8000/时，并没有提供这个参数，所以FastAPI返回422错误
def func():  # 注意下上面的错误写法
    with open(f'html/index.html','rb') as f:
        data = f.read()
    return  Response(content=data,media_type='text/html')

# 处理html文件
@app.get('/{path}')
def func0(path:str):
    with open(f'html/{path}','rb') as f:
        data = f.read()
    return  Response(content=data,media_type='text/html')

# 处理图片请求
@app.get('/images/{path}')
def func1(path: str):  # 在Python函数中，可以这么写def 函数名称(参数: 建议的参数类型，可以不遵守)
    with open(f'html/images/{path}', 'rb') as f:  # 由于要引用变量，所以要用f
        data = f.read()
    # 返回数据给客户端浏览器
    return Response(content=data, media_type='png')

# 处理小图标请求
@app.get('/favicon.ico')
def func2(path:str):
    with open(f'html/favicon.ico','rb') as f:
        data = f.read()
    return  Response(content=data,media_type='image/x-icon')

# ④ 启动服务器开始监听
uvicorn.run(app, host='127.0.0.1', port=8000)